package com.project.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.project.bean.RoomBean;
import java.util.ArrayList;

public interface IRoomService {
    /**
     * 显示所有房间
     * @return 房间集合  房间信息{编号，地址，状态，可住人数，已住人数，房间类型}
     */
    ArrayList<RoomBean> showAllRooms();

    /** （学生入住时）
     * 按性别 查询 可住房间（可住人数>已住人数）
     * @param gender 性别
     * @return
     */
    public ArrayList<RoomBean> findRoomByGender(String gender);

    /**
     * 添加房间
     * @param roomBean 房间对象 {房间地址，可住人数，房间类型}
     * @return 布尔值
     * 步骤：判断地址是否重名
     */
    boolean addRoom(RoomBean roomBean);

    /**
     * 删除房间
     * @param roomId 房间id
     * @return 布尔值
     * 步骤：
     * 1、统计房间的已住人数
     * 2、已住人数为0，则先删除该房间的设施记录，再删除房间，返回true
     * 3、已住人数不为0，返回false
     */
    boolean delRoom(Integer roomId);

    /**
     * 根据房间id 查看房间详细信息
     * @param roomId 房间id
     * @return 房间对象
     * 步骤：
     * 1、根据id查找房间，同时统计房间已住人数
     * 2、查询房间所住的学生集合，学生信息中需要查询 班级名称
     */
    RoomBean roomById(Integer roomId);

    /**
     * 动态条件分页查询房间,同时统计每个房间已住人数（外联，没住人的房间也要显示）
     * @param pageNum 页码
     * @param roomAddress 房间地址
     * @param roomState 房间状态
     * @param roomType 房间类型

     * 步骤：动态条件分页查找房间信息，同时统计每个房间的已住人数
     * @return 房间分页对象  房间信息{编号，地址，状态，可住人数，已住人数，房间类型}
     */
    IPage<RoomBean> cutPageRoomByCondition(Integer pageNum, String roomAddress, String roomState, String roomType, String canInOrNo);

}
